<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件
//use think\Route;
//Route::get('doc','reflection\Documents@run');
/**
 * 接口返回状态码描述
 * @param unknown $code
 * @param bool $isCodeObj  是否返回整个code对象
 * @return Ambigous <string>
 */
function return_msg($code,$isCodeObj=false){
    $codeMsg = [
        100=>'未登录',
        101=>'没有权限',
        102=>'余额不足',
        200=>'执行成功',
        201=>'未绑定身份',     //qq或者微信登录的时候，如果没有注册则使用QQ或微信注册，绑定邮箱或手机
        202=>'注册成功',      //注册成功，前往完善信息
        303=>'参数质检失败',
        404=>'未找到',
        500=>'系统异常',
        //系统错误方法、不对外公开
        501=>'数据库异常连接',
        502=>'控制器或方法异常',
        503=>'代码异常',
        504=>'SQL语句异常',
        666=>'无需支付',
    ];
    return $isCodeObj?$codeMsg:$codeMsg[$code];
}
/**
 * 获取输入数据 支持默认值和过滤
 * @param string    $key 获取的变量名(支持多个获取返回数组格式、不存在null多个使用|隔开)
 * @param mixed     $default 默认值
 * @param string    $filter 过滤方法
 * @return mixed
 * 多个格式化获取时不支持默认值和过滤方法的设置
 */
function I($key = '', $default = null, $filter = ''){
    if (0 === strpos($key, '|') || false===strpos($key, '|')) {
        return input($key,$default,$filter);
    }else{
        $input = input('');
        $param = explode('|', $key);
        $paramData = [];
        foreach ($param  as $v){
            if (isset($input[$v])){
                $paramData[$v] = $input[$v];
            }else{
                $paramData[$v] = null;
            }
        }
        return $paramData;
    }
}
/**
 * api接口返回友好信息
 * @param number $code   状态
 * @param string $msg    状态描述
 * @param unknown $data  返回数据
 */
function apiReturn( $code=200 , $msg='', $data = array() ,$Total=0 ){
    $returnData = array(
        'code' => $code,
        'msg'  => $msg?$msg:return_msg($code),
        'data' => $data,
        'Total'=>$Total
    );
    if(I('callback')){
        echo I('callback').'('.json_encode($returnData).')';die;
    }
    echo json_encode($returnData);die;
}
/**
 * 系统非常规MD5加密方法
 * @param  string $str 要加密的字符串
 * @param  string $auth_key 要加密的字符串
 * @return string
 * @author jry <598821125@qq.com>
 */
function user_md5($str, $auth_key = ''){
    if(!$auth_key){
        $auth_key = config('AUTH_KEY');
    }
    return '' === $str ? '' : md5(sha1($str) . $auth_key);
}
/**
 * 无限极分类
 *@param  array  $list  二维数组
 * @param  integer $pid  父类id
 * @param  integer $deep 递归深度
 * @return array   $arr  无限极分类
 */
function getTree($list,$pid=0,$deep=0){
    static $arr = array();
    foreach ($list as $value){
        if($value['parent_id'] == $pid){//判断其是顶级分类
            $value['deep'] = $deep;//增加一个递归深度字段
            $arr[]=$value;//将信息放入数组中
            getTree($list,$value['id'],$deep+1);//因为其为顶级分类  递归获得子分类
        }
    }
    return $arr;
}